package net.wang.concurrency.test.publish;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class Escape {

    private int thisCanBeEscape = 0;

    public Escape() {
        new InnerClass();
    }

    /**
     * Escape对象在未完成构造之前，其属性就已经被访问。不安全
     * 可以i用工厂模式或者初始化方法实例化对象
     */
    private class InnerClass {
        public InnerClass() {
            log.info("{}", Escape.this.thisCanBeEscape);
        }
    }

    @Test
    public void escapeTest() {
        new Escape();
    }
}
